package application;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

/**
 * 登录界面的demo
 * @author 10550
 *
 */
public class Main extends Application {
	@Override
	public void start(Stage stage) {
		try {

			stage.setTitle("JavaFx Welcome");

			// 创建一个GridPane对象,可以将控件以网格形式进行布局
			GridPane grid = new GridPane();
			// 将grid的默认位置居中显示
			grid.setAlignment(Pos.CENTER);
			//gap属性管理行与列之间的间隔
			grid.setHgap(10);
			grid.setVgap(10);
			//insets分别指定了上，下，左，右的间隔
			grid.setPadding(new Insets(25, 25, 25, 25));

			Scene scene = new Scene(grid, 400, 475);
			stage.setScene(scene);
			//读取样式文件
			scene.getStylesheets().add(Main.class.getResource("Login.css").toExternalForm());
			
			// 增加文本，标签，和文本域
			Text sceneTitle = new Text("Welcome");
			//sceneTitle.setFont(Font.font("楷体", FontWeight.NORMAL, 20));
			//为欢迎文本创建id，以便于可以在css文件中定义样式
			sceneTitle.setId("welcome-text");
			grid.add(sceneTitle, 0, 0, 2, 1);

			// 创建Label对象，放到第0列，第一行
			Label userName = new Label("User Name");
			grid.add(userName, 0, 1);

			// 创建文本输入框，放到第1列，第一行
			TextField userTextFiled = new TextField();
			grid.add(userTextFiled, 1, 1);

			Label pw = new Label("Password");
			grid.add(pw, 0, 2);

			PasswordField pwBox = new PasswordField();
			grid.add(pwBox, 1, 2);

			// 显示网格线
			// grid.setGridLinesVisible(true);

			// 增加Button和Text
			Button btn = new Button("Sign in");
			//创建一个横向布局
			HBox hbBtn = new HBox();
			// 设置横向布局的位置为右下角
			hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
			//将button添加到布局当中
			hbBtn.getChildren().add(btn);
			
			grid.add(hbBtn, 1, 4);

			//用于显示文本信息
			final Text actionTarget = new Text();
			actionTarget.setId("actiontarget");
			grid.add(actionTarget, 1, 6);
			
			//为button绑定事件，当点击button时显示文字
			btn.setOnAction(new EventHandler<ActionEvent>() {
				
				@Override
				public void handle(ActionEvent event) {
					
					//将文字以红色来显示
					//actionTarget.setFill(Color.FIREBRICK);
					actionTarget.setText("Sign in button pressed");
				}
			});
			
			stage.show();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		launch(args);
	}
}
